package _switch

import (
	"fmt"
	"math/rand"
)

/** switch 条件语句 */

// 示例1
func case1() {
	// 随机生成 1 ~ 7 之间随机数
	num := rand.Intn(7) + 1
	switch num {
	case 1:
		fmt.Println("星期一")
	case 2:
		fmt.Println("星期二")
	case 3:
		fmt.Println("星期三")
	case 4:
		fmt.Println("星期四")
	case 5:
		fmt.Println("星期五")
	case 6:
		fmt.Println("星期六")
	case 7:
		fmt.Println("星期七")
	default:
		fmt.Println("不合法的数值")

	}
}

// 示例2  无表达式的 switch
func case2() {
	// 随机生成100数值
	num := rand.Intn(100)
	switch {
	case num <= 60:
		fmt.Println("黑三星")
	case num > 60 && num < 75:
		fmt.Println("一星")
	case num > 75 && num < 85:
		fmt.Println("二星")
	case num > 85:
		fmt.Println("三星")

	}
}

// 示例3 swtich 满足多条件表达式
func case3() {
	// 定义字符串切片作为集合
	strings := []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "m", "l", "k", "o", "p"}
	randomString := strings[rand.Intn(len(strings))]
	switch randomString {
	case "a", "e", "i", "o", "u": // 一个选项多个表达式
		fmt.Println("符合标准", randomString)
	default:
		fmt.Println("不符合", randomString)
	}
}

// 示例3  使用 fallthrough 语句可以在已经执行完成的 case 之后，把控制权转移到下一个 case 的执行代码中
func case4() {
	switch num := 49; { // num is not a constant
	case num < 50:
		fmt.Printf("%d is lesser than 50\n", num)
		fallthrough
	case num < 100:
		fmt.Printf("%d is lesser than 100\n", num)
		fallthrough
	case num < 200:
		fmt.Printf("%d is lesser than 200", num)
	}

	fmt.Println()
}

func Test() {

	case1()

	case2()

	case3()

	case4()
}
